Skip to content

Version Packages (beta)#1615

Merged
VaguelySerious merged 1 commit intomainfrom
changeset-release/main
Apr 7, 2026
Merged

Version Packages (beta)#1615
VaguelySerious merged 1 commit intomainfrom
changeset-release/main

Conversation

@workflow-devkit-release-bot
Copy link
Copy Markdown
Contributor

@workflow-devkit-release-bot workflow-devkit-release-bot bot commented Apr 6, 2026

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

⚠️⚠️⚠️⚠️⚠️⚠️

main is currently in pre mode so this branch has prereleases rather than normal releases. If you want to exit prereleases, run changeset pre exit on main.

⚠️⚠️⚠️⚠️⚠️⚠️

Releases

@workflow/ai@4.1.0-beta.61

Patch Changes

  • #1444 e9ebe8f Thanks @gr2m! - Preserve reasoning content in DurableAgent conversation history across tool loop steps

  • #1608 70e89bf Thanks @VaguelySerious! - DurableAgent telemetry: emit full AI SDK-compatible attributes on spans

  • Updated dependencies []:

    • workflow@4.2.0-beta.78

@workflow/astro@4.0.0-beta.52

Patch Changes

  • Updated dependencies [f5d2aef, 3308701]:
    • @workflow/builders@4.0.1-beta.69
    • @workflow/rollup@4.0.0-beta.35
    • @workflow/vite@4.0.0-beta.28

@workflow/builders@4.0.1-beta.69

Patch Changes

@workflow/cli@4.2.0-beta.78

Patch Changes

  • #1552 f5d2aef Thanks @TooTallNate! - Add workflow transform command for inspecting SWC transform output with optional serde compliance analysis

  • #1552 f5d2aef Thanks @TooTallNate! - Implement serde compliance checks in workflow validate

  • #1629 a6bcea9 Thanks @VaguelySerious! - CLI start command probes deployment specVersion via health check before choosing queue transport. Health check always uses JSON transport for compatibility with old deployments.

  • #1414 2680a42 Thanks @TooTallNate! - Add Request and Response revivers to web and CLI hydration so serialized Request/Response objects display correctly in the observability UI and CLI inspect output.

  • Updated dependencies [f5d2aef, 5f138f2, a6bcea9, 7e70d18, ba916e1, c9b3038, 3308701, c8dce52, ab872cc, 5b9eb40]:

    • @workflow/builders@4.0.1-beta.69
    • @workflow/world-vercel@4.1.0-beta.49
    • @workflow/world@4.1.0-beta.17
    • @workflow/core@4.2.0-beta.78
    • @workflow/world-local@4.1.0-beta.51
    • @workflow/web@4.1.0-beta.47
    • @workflow/errors@4.1.0-beta.20

@workflow/core@4.2.0-beta.78

Patch Changes

  • #1627 5f138f2 Thanks @VaguelySerious! - Bump specVersion to 3 and gate CBOR queue transport on spec version. Old deployments (specVersion < 3) receive JSON queue messages; new deployments receive CBOR. Handler uses dual transport to deserialize both formats. Fixes replay/reenqueue from dashboard to older deployments.

  • #1629 a6bcea9 Thanks @VaguelySerious! - CLI start command probes deployment specVersion via health check before choosing queue transport. Health check always uses JSON transport for compatibility with old deployments.

  • #1533 7e70d18 Thanks @VaguelySerious! - Add streamFlushIntervalMs option to Streamer interface, optional for worlds to allow overwriting the default of 10ms in low-latency environments.

  • #1512 ba916e1 Thanks @TooTallNate! - Add DOMException to the workflow VM context and add first-class serialization support, preserving message, name, and derived code across serialization boundaries

  • #1618 c9b3038 Thanks @VaguelySerious! - fix(core): properly propagate stream cancellation on disconnect

  • #1537 c8dce52 Thanks @VaguelySerious! - Allow workflow invocation to create run if initial storage call in start did not succeed. Send run input through queue to enable this. Allow creating run_created and run_started events together in World, and skip first event list call by returning events directly.

  • #1606 ab872cc Thanks @VaguelySerious! - Make registeredSteps a global singleton to protect against module duplication and caching issues

  • Updated dependencies [5f138f2, 7e70d18, c8dce52, 5b9eb40]:

    • @workflow/world-vercel@4.1.0-beta.49
    • @workflow/world@4.1.0-beta.17
    • @workflow/world-local@4.1.0-beta.51
    • @workflow/errors@4.1.0-beta.20

@workflow/nest@0.0.0-beta.27

Patch Changes

  • Updated dependencies [f5d2aef, 3308701]:
    • @workflow/builders@4.0.1-beta.69

@workflow/next@4.0.1-beta.74

Patch Changes

@workflow/nitro@4.0.1-beta.73

Patch Changes

@workflow/nuxt@4.0.1-beta.62

Patch Changes

  • Updated dependencies []:
    • @workflow/nitro@4.0.1-beta.73

@workflow/rollup@4.0.0-beta.35

Patch Changes

  • Updated dependencies [f5d2aef, 3308701]:
    • @workflow/builders@4.0.1-beta.69

@workflow/sveltekit@4.0.0-beta.67

Patch Changes

  • Updated dependencies [f5d2aef, 3308701]:
    • @workflow/builders@4.0.1-beta.69
    • @workflow/rollup@4.0.0-beta.35
    • @workflow/vite@4.0.0-beta.28

@workflow/vite@4.0.0-beta.28

Patch Changes

  • Updated dependencies [f5d2aef, 3308701]:
    • @workflow/builders@4.0.1-beta.69

@workflow/vitest@4.0.1-beta.15

Patch Changes

@workflow/web-shared@4.1.0-beta.73

Patch Changes

workflow@4.2.0-beta.78

Patch Changes

  • Updated dependencies [f5d2aef, f5d2aef, 5f138f2, a6bcea9, 7e70d18, ba916e1, c9b3038, c8dce52, 2680a42, 5aab85b, ab872cc]:
    • @workflow/cli@4.2.0-beta.78
    • @workflow/core@4.2.0-beta.78
    • @workflow/next@4.0.1-beta.74
    • @workflow/astro@4.0.0-beta.52
    • @workflow/nest@0.0.0-beta.27
    • @workflow/nitro@4.0.1-beta.73
    • @workflow/rollup@4.0.0-beta.35
    • @workflow/sveltekit@4.0.0-beta.67
    • @workflow/errors@4.1.0-beta.20
    • @workflow/typescript-plugin@4.0.1-beta.5
    • @workflow/nuxt@4.0.1-beta.62

@workflow/world@4.1.0-beta.17

Patch Changes

  • #1627 5f138f2 Thanks @VaguelySerious! - Bump specVersion to 3 and gate CBOR queue transport on spec version. Old deployments (specVersion < 3) receive JSON queue messages; new deployments receive CBOR. Handler uses dual transport to deserialize both formats. Fixes replay/reenqueue from dashboard to older deployments.

  • #1533 7e70d18 Thanks @VaguelySerious! - Add streamFlushIntervalMs option to Streamer interface, optional for worlds to allow overwriting the default of 10ms in low-latency environments.

  • #1537 c8dce52 Thanks @VaguelySerious! - Allow workflow invocation to create run if initial storage call in start did not succeed. Send run input through queue to enable this. Allow creating run_created and run_started events together in World, and skip first event list call by returning events directly.

@workflow/world-local@4.1.0-beta.51

Patch Changes

  • #1533 7e70d18 Thanks @VaguelySerious! - Add streamFlushIntervalMs option to Streamer interface, optional for worlds to allow overwriting the default of 10ms in low-latency environments.

  • #1537 c8dce52 Thanks @VaguelySerious! - Allow workflow invocation to create run if initial storage call in start did not succeed. Send run input through queue to enable this. Allow creating run_created and run_started events together in World, and skip first event list call by returning events directly.

  • Updated dependencies [5f138f2, 7e70d18, c8dce52]:

    • @workflow/world@4.1.0-beta.17
    • @workflow/errors@4.1.0-beta.20

@workflow/world-postgres@4.1.0-beta.53

Patch Changes

  • #1533 7e70d18 Thanks @VaguelySerious! - Add streamFlushIntervalMs option to Streamer interface, optional for worlds to allow overwriting the default of 10ms in low-latency environments.

  • #1537 c8dce52 Thanks @VaguelySerious! - Allow workflow invocation to create run if initial storage call in start did not succeed. Send run input through queue to enable this. Allow creating run_created and run_started events together in World, and skip first event list call by returning events directly.

  • Updated dependencies [5f138f2, 7e70d18, c8dce52]:

    • @workflow/world@4.1.0-beta.17
    • @workflow/world-local@4.1.0-beta.51
    • @workflow/errors@4.1.0-beta.20

@workflow/world-testing@4.1.0-beta.79

Patch Changes

@workflow/world-vercel@4.1.0-beta.49

Patch Changes

  • #1627 5f138f2 Thanks @VaguelySerious! - Bump specVersion to 3 and gate CBOR queue transport on spec version. Old deployments (specVersion < 3) receive JSON queue messages; new deployments receive CBOR. Handler uses dual transport to deserialize both formats. Fixes replay/reenqueue from dashboard to older deployments.

  • #1537 c8dce52 Thanks @VaguelySerious! - Allow workflow invocation to create run if initial storage call in start did not succeed. Send run input through queue to enable this. Allow creating run_created and run_started events together in World, and skip first event list call by returning events directly.

  • #1626 5b9eb40 Thanks @VaguelySerious! - Paginate writeToStreamMulti to stay within the server's 1000 chunks per batch limit

  • Updated dependencies [5f138f2, 7e70d18, c8dce52]:

    • @workflow/world@4.1.0-beta.17
    • @workflow/errors@4.1.0-beta.20

@workflow-devkit-release-bot workflow-devkit-release-bot bot requested a review from a team as a code owner April 6, 2026 16:43
@vercel
Copy link
Copy Markdown
Contributor

vercel bot commented Apr 6, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
example-nextjs-workflow-turbopack Ready Ready Preview, Comment Apr 7, 2026 6:06pm
example-nextjs-workflow-webpack Ready Ready Preview, Comment Apr 7, 2026 6:06pm
example-workflow Ready Ready Preview, Comment Apr 7, 2026 6:06pm
workbench-astro-workflow Ready Ready Preview, Comment Apr 7, 2026 6:06pm
workbench-express-workflow Ready Ready Preview, Comment Apr 7, 2026 6:06pm
workbench-fastify-workflow Ready Ready Preview, Comment Apr 7, 2026 6:06pm
workbench-hono-workflow Ready Ready Preview, Comment Apr 7, 2026 6:06pm
workbench-nitro-workflow Ready Ready Preview, Comment Apr 7, 2026 6:06pm
workbench-nuxt-workflow Ready Ready Preview, Comment Apr 7, 2026 6:06pm
workbench-sveltekit-workflow Ready Ready Preview, Comment Apr 7, 2026 6:06pm
workbench-vite-workflow Ready Ready Preview, Comment Apr 7, 2026 6:06pm
workflow-docs Ready Ready Preview, Comment, Open in v0 Apr 7, 2026 6:06pm
workflow-swc-playground Ready Ready Preview, Comment Apr 7, 2026 6:06pm

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 6, 2026

🧪 E2E Test Results

Some tests failed

Summary

Passed Failed Skipped Total
✅ ▲ Vercel Production 879 0 67 946
✅ 💻 Local Development 854 0 178 1032
❌ 📦 Local Production 853 1 178 1032
✅ 🐘 Local Postgres 854 0 178 1032
✅ 🪟 Windows 78 0 8 86
❌ 🌍 Community Worlds 16 60 8 84
✅ 📋 Other 216 0 42 258
Total 3750 61 659 4470

❌ Failed Tests

📦 Local Production (1 failed)

nitro-stable (1 failed):

  • hookWorkflow is not resumable via public webhook endpoint | wrun_01KNMJ17E0BWTWN4N0A8MEY73E
🌍 Community Worlds (60 failed)

mongodb-dev (1 failed):

  • dev e2e should rebuild on imported step dependency change

redis-dev (1 failed):

  • dev e2e should rebuild on imported step dependency change

turso-dev (1 failed):

  • dev e2e should rebuild on imported step dependency change

turso (57 failed):

  • addTenWorkflow | wrun_01KNMHZZV3FF5MCSYX8PCR8A7K
  • addTenWorkflow | wrun_01KNMHZZV3FF5MCSYX8PCR8A7K
  • wellKnownAgentWorkflow (.well-known/agent) | wrun_01KNMJ1GF8WX2DVBHS6VRWFBC4
  • should work with react rendering in step
  • promiseAllWorkflow | wrun_01KNMJ0606BGV3JSSKWRCRPNR4
  • promiseRaceWorkflow | wrun_01KNMJ0CJYSZXR26VP8C21Y9F9
  • promiseAnyWorkflow | wrun_01KNMJ0FR417255BQSZRWQT6K2
  • importedStepOnlyWorkflow | wrun_01KNMJ1TX7DRN5KB2AMS4Q4M50
  • hookWorkflow | wrun_01KNMJ0X0093289DD29GJDQ3AR
  • hookWorkflow is not resumable via public webhook endpoint | wrun_01KNMJ17E0BWTWN4N0A8MEY73E
  • webhookWorkflow | wrun_01KNMJ1G32RPCHRKSFXJPRQA7G
  • sleepingWorkflow | wrun_01KNMJ1PME7Q4TXWY7CD1DN92M
  • parallelSleepWorkflow | wrun_01KNMJ22MN98FZTC5BE1DA2JE9
  • nullByteWorkflow | wrun_01KNMJ25NPE1G40DKQFFQPST1Z
  • workflowAndStepMetadataWorkflow | wrun_01KNMJ27KGZGSTN2PJ86Q165BJ
  • fetchWorkflow | wrun_01KNMJ4Y1S2RGJNV0J5SXDQ1GD
  • promiseRaceStressTestWorkflow | wrun_01KNMJ5193HAK2GEE4VMX81HSJ
  • error handling error propagation workflow errors nested function calls preserve message and stack trace
  • error handling error propagation workflow errors cross-file imports preserve message and stack trace
  • error handling error propagation step errors basic step error preserves message and stack trace
  • error handling error propagation step errors cross-file step error preserves message and function names in stack
  • error handling retry behavior regular Error retries until success
  • error handling retry behavior FatalError fails immediately without retries
  • error handling retry behavior RetryableError respects custom retryAfter delay
  • error handling retry behavior maxRetries=0 disables retries
  • error handling catchability FatalError can be caught and detected with FatalError.is()
  • error handling not registered WorkflowNotRegisteredError fails the run when workflow does not exist
  • error handling not registered StepNotRegisteredError fails the step but workflow can catch it
  • error handling not registered StepNotRegisteredError fails the run when not caught in workflow
  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_01KNMJ8A1FM2VR2GDXF5RN7ZAP
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_01KNMJ8X8ME9Y085NWZ0NAV4DC
  • hookDisposeTestWorkflow - hook token reuse after explicit disposal while workflow still running | wrun_01KNMJ9HPYF3ND04QM8RG9WW7T
  • stepFunctionPassingWorkflow - step function references can be passed as arguments (without closure vars) | wrun_01KNMJA540KXSD7SY827VDN62D
  • stepFunctionWithClosureWorkflow - step function with closure variables passed as argument | wrun_01KNMJADFVYN05C8PP7Z5F4E9J
  • closureVariableWorkflow - nested step functions with closure variables | wrun_01KNMJAJFXE0V7NYCFAXB3H553
  • spawnWorkflowFromStepWorkflow - spawning a child workflow using start() inside a step | wrun_01KNMJAMDVBKGV0T31J1PM25JM
  • health check (queue-based) - workflow and step endpoints respond to health check messages
  • pathsAliasWorkflow - TypeScript path aliases resolve correctly | wrun_01KNMJB1REW3HBR8N0BMVB50YV
  • Calculator.calculate - static workflow method using static step methods from another class | wrun_01KNMJB75VX6PAE3J0KMF9ST0H
  • AllInOneService.processNumber - static workflow method using sibling static step methods | wrun_01KNMJBDC30GGMQAJG7H0A46PF
  • ChainableService.processWithThis - static step methods using this to reference the class | wrun_01KNMJBKE0EN320GKBR3N5H3PV
  • thisSerializationWorkflow - step function invoked with .call() and .apply() | wrun_01KNMJBSFCXTX58DQV8ATTEQ3H
  • customSerializationWorkflow - custom class serialization with WORKFLOW_SERIALIZE/WORKFLOW_DESERIALIZE | wrun_01KNMJBZTAY42NHGPPP09ZAAZK
  • instanceMethodStepWorkflow - instance methods with "use step" directive | wrun_01KNMJC6FNTT9SWJJAARJ8KSTN
  • crossContextSerdeWorkflow - classes defined in step code are deserializable in workflow context | wrun_01KNMJCHSW1Z4D3CXKZEX1ZCCE
  • stepFunctionAsStartArgWorkflow - step function reference passed as start() argument | wrun_01KNMJCS503AB71K0T90GV383T
  • cancelRun - cancelling a running workflow | wrun_01KNMJCZ6Y9HSCS1FN31RDGYNQ
  • cancelRun via CLI - cancelling a running workflow | wrun_01KNMJD7YNBZ4M7M6RX5K6WFYD
  • pages router addTenWorkflow via pages router
  • pages router promiseAllWorkflow via pages router
  • pages router sleepingWorkflow via pages router
  • hookWithSleepWorkflow - hook payloads delivered correctly with concurrent sleep | wrun_01KNMJDK5Y9G4AVBGZ91VHRMTT
  • sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration | wrun_01KNMJE8BSG1B8RCG518MKSJ66
  • sleepWithSequentialStepsWorkflow - sequential steps work with concurrent sleep (control) | wrun_01KNMJEJR8460G501H9P0RRMP4
  • importMetaUrlWorkflow - import.meta.url is available in step bundles | wrun_01KNMJES0AZX2WSXKHAFCAFXSF
  • metadataFromHelperWorkflow - getWorkflowMetadata/getStepMetadata work from module-level helper (#1577) | wrun_01KNMJEV63B2H053E808KTFVF6
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_01KNMJEX4235E31SH69AP3Y1P5

Details by Category

✅ ▲ Vercel Production
App Passed Failed Skipped
✅ astro 79 0 7
✅ example 79 0 7
✅ express 79 0 7
✅ fastify 79 0 7
✅ hono 79 0 7
✅ nextjs-turbopack 84 0 2
✅ nextjs-webpack 84 0 2
✅ nitro 79 0 7
✅ nuxt 79 0 7
✅ sveltekit 79 0 7
✅ vite 79 0 7
✅ 💻 Local Development
App Passed Failed Skipped
✅ astro-stable 72 0 14
✅ express-stable 72 0 14
✅ fastify-stable 72 0 14
✅ hono-stable 72 0 14
✅ nextjs-turbopack-canary 61 0 25
✅ nextjs-turbopack-stable 78 0 8
✅ nextjs-webpack-canary 61 0 25
✅ nextjs-webpack-stable 78 0 8
✅ nitro-stable 72 0 14
✅ nuxt-stable 72 0 14
✅ sveltekit-stable 72 0 14
✅ vite-stable 72 0 14
❌ 📦 Local Production
App Passed Failed Skipped
✅ astro-stable 72 0 14
✅ express-stable 72 0 14
✅ fastify-stable 72 0 14
✅ hono-stable 72 0 14
✅ nextjs-turbopack-canary 61 0 25
✅ nextjs-turbopack-stable 78 0 8
✅ nextjs-webpack-canary 61 0 25
✅ nextjs-webpack-stable 78 0 8
❌ nitro-stable 71 1 14
✅ nuxt-stable 72 0 14
✅ sveltekit-stable 72 0 14
✅ vite-stable 72 0 14
✅ 🐘 Local Postgres
App Passed Failed Skipped
✅ astro-stable 72 0 14
✅ express-stable 72 0 14
✅ fastify-stable 72 0 14
✅ hono-stable 72 0 14
✅ nextjs-turbopack-canary 61 0 25
✅ nextjs-turbopack-stable 78 0 8
✅ nextjs-webpack-canary 61 0 25
✅ nextjs-webpack-stable 78 0 8
✅ nitro-stable 72 0 14
✅ nuxt-stable 72 0 14
✅ sveltekit-stable 72 0 14
✅ vite-stable 72 0 14
✅ 🪟 Windows
App Passed Failed Skipped
✅ nextjs-turbopack 78 0 8
❌ 🌍 Community Worlds
App Passed Failed Skipped
❌ mongodb-dev 4 1 0
❌ redis-dev 4 1 0
❌ turso-dev 4 1 0
❌ turso 4 57 8
✅ 📋 Other
App Passed Failed Skipped
✅ e2e-local-dev-nest-stable 72 0 14
✅ e2e-local-postgres-nest-stable 72 0 14
✅ e2e-local-prod-nest-stable 72 0 14

📋 View full workflow run


Some E2E test jobs failed:

  • Vercel Prod: success
  • Local Dev: success
  • Local Prod: failure
  • Local Postgres: success
  • Windows: success

Check the workflow run for details.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 6, 2026

📊 Benchmark Results

📈 Comparing against baseline from main branch. Green 🟢 = faster, Red 🔺 = slower.

workflow with no steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Express 0.043s (+4.6%) 1.005s (~) 0.962s 10 1.00x
💻 Local Nitro 0.044s (+1.9%) 1.006s (~) 0.962s 10 1.01x
💻 Local Next.js (Turbopack) 0.047s 1.006s 0.959s 10 1.08x
🐘 Postgres Next.js (Turbopack) 0.054s 1.010s 0.956s 10 1.25x
🐘 Postgres Nitro 0.059s (+5.0% 🔺) 1.011s (~) 0.952s 10 1.35x
🐘 Postgres Express 0.060s (-3.4%) 1.010s (~) 0.950s 10 1.37x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 0.229s (-9.6% 🟢) 2.202s (-3.8%) 1.973s 10 1.00x
▲ Vercel Nitro 0.257s (-19.6% 🟢) 2.339s (+3.0%) 2.082s 10 1.12x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Next.js (Turbopack) | Nitro

workflow with 1 step

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Next.js (Turbopack) 1.119s 2.006s 0.887s 10 1.00x
💻 Local Express 1.128s (~) 2.006s (~) 0.878s 10 1.01x
💻 Local Nitro 1.129s (~) 2.006s (~) 0.877s 10 1.01x
🐘 Postgres Next.js (Turbopack) 1.138s 2.010s 0.871s 10 1.02x
🐘 Postgres Express 1.153s (+0.5%) 2.012s (~) 0.859s 10 1.03x
🐘 Postgres Nitro 1.166s (+2.3%) 2.010s (~) 0.844s 10 1.04x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 1.934s (+2.2%) 3.653s (-2.4%) 1.720s 10 1.00x
▲ Vercel Next.js (Turbopack) 1.998s (+0.9%) 3.641s (-1.1%) 1.643s 10 1.03x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Nitro | Next.js (Turbopack)

workflow with 10 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Next.js (Turbopack) 10.782s 11.023s 0.241s 3 1.00x
🐘 Postgres Next.js (Turbopack) 10.834s 11.021s 0.187s 3 1.00x
🐘 Postgres Express 10.888s (+0.6%) 11.022s (~) 0.135s 3 1.01x
🐘 Postgres Nitro 10.901s (~) 11.022s (~) 0.121s 3 1.01x
💻 Local Express 10.943s (~) 11.024s (~) 0.081s 3 1.01x
💻 Local Nitro 10.954s (~) 11.024s (~) 0.070s 3 1.02x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 17.073s (+3.1%) 19.452s (+2.5%) 2.379s 2 1.00x
▲ Vercel Next.js (Turbopack) 17.288s (+1.3%) 18.439s (-1.7%) 1.152s 2 1.01x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Nitro | Next.js (Turbopack)

workflow with 25 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 14.439s 15.033s 0.594s 4 1.00x
🐘 Postgres Express 14.583s (~) 15.019s (~) 0.436s 4 1.01x
💻 Local Next.js (Turbopack) 14.588s 15.031s 0.443s 4 1.01x
🐘 Postgres Nitro 14.596s (+0.6%) 15.023s (~) 0.427s 4 1.01x
💻 Local Nitro 14.956s (~) 15.030s (~) 0.074s 4 1.04x
💻 Local Express 15.005s (~) 15.281s (+1.7%) 0.277s 4 1.04x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 32.371s (+0.8%) 34.432s (+1.5%) 2.061s 2 1.00x
▲ Vercel Nitro 34.621s (+8.1% 🔺) 36.828s (+9.1% 🔺) 2.207s 2 1.07x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Next.js (Turbopack) | Nitro

workflow with 50 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 13.807s 14.166s 0.360s 7 1.00x
🐘 Postgres Nitro 14.061s (~) 14.597s (~) 0.536s 7 1.02x
🐘 Postgres Express 14.136s (+2.0%) 15.026s (+7.2% 🔺) 0.890s 6 1.02x
💻 Local Next.js (Turbopack) 15.998s 16.363s 0.364s 6 1.16x
💻 Local Express 16.621s (~) 17.031s (~) 0.409s 6 1.20x
💻 Local Nitro 16.632s (-0.7%) 17.032s (~) 0.400s 6 1.20x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 55.025s (+7.5% 🔺) 56.902s (+7.3% 🔺) 1.877s 2 1.00x
▲ Vercel Next.js (Turbopack) 55.791s (+2.2%) 57.788s (+2.6%) 1.998s 2 1.01x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Nitro | Next.js (Turbopack)

Promise.all with 10 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 1.224s 2.009s 0.785s 15 1.00x
🐘 Postgres Express 1.265s (~) 2.011s (~) 0.746s 15 1.03x
🐘 Postgres Nitro 1.277s (~) 2.010s (~) 0.733s 15 1.04x
💻 Local Nitro 1.467s (-2.1%) 2.005s (~) 0.539s 15 1.20x
💻 Local Express 1.537s (~) 2.006s (~) 0.469s 15 1.26x
💻 Local Next.js (Turbopack) 1.553s 2.005s 0.453s 15 1.27x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 2.627s (+7.8% 🔺) 4.427s (+8.9% 🔺) 1.800s 7 1.00x
▲ Vercel Nitro 3.745s (+93.7% 🔺) 5.435s (+50.6% 🔺) 1.690s 6 1.43x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Next.js (Turbopack) | Nitro

Promise.all with 25 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 2.365s 3.010s 0.644s 10 1.00x
🐘 Postgres Nitro 2.380s (+1.1%) 3.008s (~) 0.629s 10 1.01x
🐘 Postgres Express 2.424s (+1.0%) 3.011s (~) 0.586s 10 1.03x
💻 Local Nitro 2.822s (-3.7%) 3.108s (~) 0.286s 10 1.19x
💻 Local Next.js (Turbopack) 3.015s 3.566s 0.551s 9 1.27x
💻 Local Express 3.105s (+7.5% 🔺) 3.677s (+14.6% 🔺) 0.571s 9 1.31x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 2.678s (+2.0%) 4.323s (+6.4% 🔺) 1.646s 8 1.00x
▲ Vercel Nitro 5.649s (+126.4% 🔺) 7.582s (+90.0% 🔺) 1.933s 4 2.11x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Next.js (Turbopack) | Nitro

Promise.all with 50 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 3.490s (+0.5%) 4.010s (~) 0.520s 8 1.00x
🐘 Postgres Nitro 3.513s (+0.9%) 4.012s (~) 0.499s 8 1.01x
🐘 Postgres Next.js (Turbopack) 3.625s 4.011s 0.386s 8 1.04x
💻 Local Nitro 7.699s (-8.6% 🟢) 8.270s (-8.4% 🟢) 0.571s 4 2.21x
💻 Local Next.js (Turbopack) 7.816s 8.271s 0.455s 4 2.24x
💻 Local Express 8.657s (+4.7%) 9.020s (~) 0.363s 4 2.48x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 4.999s (+64.9% 🔺) 7.138s (+62.0% 🔺) 2.138s 5 1.00x
▲ Vercel Next.js (Turbopack) 11.473s (+159.0% 🔺) 12.918s (+112.0% 🔺) 1.445s 3 2.30x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Nitro | Next.js (Turbopack)

Promise.race with 10 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 1.222s 2.008s 0.786s 15 1.00x
🐘 Postgres Express 1.257s (+0.6%) 2.009s (~) 0.752s 15 1.03x
🐘 Postgres Nitro 1.274s (+1.5%) 2.008s (~) 0.735s 15 1.04x
💻 Local Next.js (Turbopack) 1.501s 2.006s 0.506s 15 1.23x
💻 Local Nitro 1.526s (-0.9%) 2.005s (~) 0.480s 15 1.25x
💻 Local Express 1.560s (-1.7%) 2.006s (~) 0.445s 15 1.28x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 1.989s (-2.2%) 3.386s (-4.9%) 1.397s 9 1.00x
▲ Vercel Nitro 2.656s (+17.0% 🔺) 4.474s (+15.4% 🔺) 1.818s 7 1.34x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Next.js (Turbopack) | Nitro

Promise.race with 25 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 2.334s (~) 3.010s (~) 0.676s 10 1.00x
🐘 Postgres Nitro 2.344s (~) 3.010s (~) 0.666s 10 1.00x
🐘 Postgres Next.js (Turbopack) 2.371s 3.009s 0.638s 10 1.02x
💻 Local Next.js (Turbopack) 2.903s 3.453s 0.550s 9 1.24x
💻 Local Nitro 3.043s (-5.4% 🟢) 3.886s (~) 0.843s 8 1.30x
💻 Local Express 3.043s (~) 3.885s (+3.3%) 0.842s 8 1.30x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 2.867s (+12.3% 🔺) 4.455s (+12.9% 🔺) 1.588s 7 1.00x
▲ Vercel Nitro 4.199s (+46.8% 🔺) 5.491s (+25.8% 🔺) 1.292s 6 1.46x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Next.js (Turbopack) | Nitro

Promise.race with 50 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 3.474s (~) 4.010s (~) 0.536s 8 1.00x
🐘 Postgres Nitro 3.525s (+2.1%) 4.009s (~) 0.484s 8 1.01x
🐘 Postgres Next.js (Turbopack) 3.619s 4.010s 0.391s 8 1.04x
💻 Local Nitro 8.049s (-21.1% 🟢) 8.526s (-20.3% 🟢) 0.477s 4 2.32x
💻 Local Next.js (Turbopack) 8.671s 9.269s 0.598s 4 2.50x
💻 Local Express 8.953s (-5.4% 🟢) 9.273s (-7.5% 🟢) 0.320s 4 2.58x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 2.771s (-1.4%) 4.519s (-1.6%) 1.748s 7 1.00x
▲ Vercel Next.js (Turbopack) 2.949s (-10.9% 🟢) 4.523s (-7.6% 🟢) 1.574s 7 1.06x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Nitro | Next.js (Turbopack)

workflow with 10 sequential data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 0.753s 1.006s 0.254s 60 1.00x
💻 Local Next.js (Turbopack) 0.831s 1.004s 0.173s 60 1.10x
🐘 Postgres Express 0.841s (+2.0%) 1.006s (~) 0.165s 60 1.12x
🐘 Postgres Nitro 0.859s (+4.8%) 1.006s (~) 0.148s 60 1.14x
💻 Local Express 0.991s (+1.3%) 1.309s (+17.4% 🔺) 0.319s 46 1.32x
💻 Local Nitro 1.029s (-15.2% 🟢) 1.854s (-7.6% 🟢) 0.826s 33 1.37x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 9.704s (+2.1%) 11.533s (+2.8%) 1.829s 6 1.00x
▲ Vercel Next.js (Turbopack) 10.000s (-13.6% 🟢) 12.009s (-10.3% 🟢) 2.009s 5 1.03x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Nitro | Next.js (Turbopack)

workflow with 25 sequential data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 1.855s 2.052s 0.198s 44 1.00x
🐘 Postgres Express 2.038s (+3.6%) 2.656s (+19.3% 🔺) 0.619s 34 1.10x
🐘 Postgres Nitro 2.056s (+5.2% 🔺) 2.767s (+28.7% 🔺) 0.711s 33 1.11x
💻 Local Next.js (Turbopack) 2.622s 3.008s 0.386s 30 1.41x
💻 Local Nitro 3.024s (-12.8% 🟢) 3.585s (-10.6% 🟢) 0.562s 26 1.63x
💻 Local Express 3.244s (+7.5% 🔺) 3.966s (+10.6% 🔺) 0.722s 23 1.75x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 29.154s (+9.2% 🔺) 31.481s (+9.4% 🔺) 2.327s 3 1.00x
▲ Vercel Next.js (Turbopack) 29.822s (+7.7% 🔺) 31.138s (+5.6% 🔺) 1.316s 3 1.02x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Nitro | Next.js (Turbopack)

workflow with 50 sequential data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 3.811s 4.076s 0.265s 30 1.00x
🐘 Postgres Express 4.113s (+4.7%) 4.891s (+16.0% 🔺) 0.778s 25 1.08x
🐘 Postgres Nitro 4.202s (+5.8% 🔺) 5.011s (+15.7% 🔺) 0.809s 24 1.10x
💻 Local Nitro 8.884s (-11.9% 🟢) 9.324s (-11.4% 🟢) 0.440s 13 2.33x
💻 Local Next.js (Turbopack) 8.976s 9.403s 0.426s 13 2.36x
💻 Local Express 9.165s (-0.5%) 9.787s (-0.8%) 0.622s 13 2.40x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 73.596s (-1.2%) 75.501s (-1.2%) 1.906s 2 1.00x
▲ Vercel Next.js (Turbopack) 83.617s (-7.5% 🟢) 85.194s (-7.7% 🟢) 1.577s 2 1.14x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Nitro | Next.js (Turbopack)

workflow with 10 concurrent data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 0.247s 1.006s 0.760s 60 1.00x
🐘 Postgres Express 0.288s (+1.9%) 1.007s (~) 0.719s 60 1.17x
🐘 Postgres Nitro 0.290s (+2.3%) 1.007s (~) 0.717s 60 1.18x
💻 Local Nitro 0.551s (-7.5% 🟢) 1.021s (+1.7%) 0.470s 59 2.24x
💻 Local Next.js (Turbopack) 0.578s 1.022s 0.444s 59 2.34x
💻 Local Express 0.688s (+4.9%) 1.095s (+5.4% 🔺) 0.407s 55 2.79x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 1.733s (+21.0% 🔺) 3.361s (+16.8% 🔺) 1.628s 18 1.00x
▲ Vercel Nitro 1.978s (+6.8% 🔺) 3.507s (+4.1%) 1.530s 18 1.14x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Next.js (Turbopack) | Nitro

workflow with 25 concurrent data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 0.464s 1.006s 0.542s 90 1.00x
🐘 Postgres Express 0.488s (-2.2%) 1.007s (-1.0%) 0.519s 90 1.05x
🐘 Postgres Nitro 0.516s (+4.6%) 1.007s (~) 0.491s 90 1.11x
💻 Local Nitro 2.327s (-8.2% 🟢) 3.009s (~) 0.682s 30 5.01x
💻 Local Next.js (Turbopack) 2.517s 3.009s 0.492s 30 5.42x
💻 Local Express 2.563s (+0.7%) 3.009s (~) 0.446s 30 5.52x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 2.898s (+17.4% 🔺) 4.675s (+14.2% 🔺) 1.777s 20 1.00x
▲ Vercel Next.js (Turbopack) 3.546s (+17.8% 🔺) 5.034s (+4.8%) 1.488s 18 1.22x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Nitro | Next.js (Turbopack)

workflow with 50 concurrent data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 0.741s 1.006s 0.265s 120 1.00x
🐘 Postgres Express 0.797s (+3.3%) 1.016s (+0.9%) 0.220s 119 1.07x
🐘 Postgres Nitro 0.846s (+7.5% 🔺) 1.036s (+2.0%) 0.191s 116 1.14x
💻 Local Nitro 10.241s (-7.0% 🟢) 10.935s (-6.3% 🟢) 0.694s 11 13.81x
💻 Local Next.js (Turbopack) 10.741s 11.300s 0.559s 11 14.49x
💻 Local Express 11.249s (~) 11.846s (-0.8%) 0.597s 11 15.17x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 5.822s (-3.6%) 7.541s (-1.4%) 1.719s 16 1.00x
▲ Vercel Nitro 6.939s (-1.6%) 8.771s (~) 1.831s 14 1.19x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Next.js (Turbopack) | Nitro

Stream Benchmarks (includes TTFB metrics)
workflow with stream

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Next.js (Turbopack) 0.166s 1.003s 0.012s 1.018s 0.852s 10 1.00x
🐘 Postgres Next.js (Turbopack) 0.192s 1.001s 0.001s 1.009s 0.818s 10 1.15x
🐘 Postgres Nitro 0.207s (-2.4%) 0.994s (~) 0.001s (-6.7% 🟢) 1.010s (~) 0.803s 10 1.25x
💻 Local Nitro 0.209s (+3.2%) 1.004s (~) 0.010s (-15.0% 🟢) 1.016s (~) 0.807s 10 1.26x
💻 Local Express 0.214s (+5.9% 🔺) 1.004s (~) 0.012s (+4.3%) 1.018s (~) 0.805s 10 1.29x
🐘 Postgres Express 0.224s (+8.3% 🔺) 0.998s (~) 0.002s (+15.4% 🔺) 1.012s (~) 0.788s 10 1.35x

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 1.552s (+5.9% 🔺) 3.468s (+28.8% 🔺) 0.410s (-9.2% 🟢) 4.280s (+21.4% 🔺) 2.729s 10 1.00x
▲ Vercel Nitro 1.964s (+35.2% 🔺) 3.411s (+37.7% 🔺) 0.535s (-26.6% 🟢) 4.390s (+21.7% 🔺) 2.426s 10 1.27x
▲ Vercel Express ⚠️ missing - - - - -

🔍 Observability: Next.js (Turbopack) | Nitro

stream pipeline with 5 transform steps (1MB)

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 0.600s 1.009s 0.005s 1.023s 0.423s 59 1.00x
🐘 Postgres Nitro 0.610s (+1.2%) 1.004s (~) 0.004s (+8.2% 🔺) 1.023s (~) 0.412s 59 1.02x
🐘 Postgres Express 0.625s (+3.6%) 1.003s (~) 0.004s (+4.9%) 1.022s (~) 0.397s 59 1.04x
💻 Local Next.js (Turbopack) 0.661s 1.011s 0.009s 1.023s 0.362s 59 1.10x
💻 Local Express 0.730s (-2.5%) 1.013s (-1.7%) 0.010s (+1.1%) 1.024s (-1.6%) 0.293s 59 1.22x
💻 Local Nitro 0.743s (-8.0% 🟢) 1.012s (~) 0.008s (-17.1% 🟢) 1.022s (-8.4% 🟢) 0.279s 59 1.24x

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 4.021s (-0.6%) 5.720s (-0.5%) 0.439s (+137.5% 🔺) 6.634s (+4.7%) 2.614s 10 1.00x
▲ Vercel Next.js (Turbopack) 4.320s (-13.0% 🟢) 5.693s (-12.3% 🟢) 0.337s (+40.3% 🔺) 6.433s (-9.6% 🟢) 2.113s 10 1.07x
▲ Vercel Express ⚠️ missing - - - - -

🔍 Observability: Nitro | Next.js (Turbopack)

10 parallel streams (1MB each)

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 0.907s 1.112s 0.000s 1.125s 0.218s 54 1.00x
🐘 Postgres Express 0.963s (+3.1%) 1.165s (+3.8%) 0.000s (-20.0% 🟢) 1.178s (+2.4%) 0.215s 53 1.06x
🐘 Postgres Nitro 0.976s (+2.5%) 1.320s (+15.5% 🔺) 0.000s (-100.0% 🟢) 1.341s (+15.7% 🔺) 0.365s 46 1.08x
💻 Local Nitro 1.206s (-1.5%) 2.021s (~) 0.000s (+18.2% 🔺) 2.023s (~) 0.817s 30 1.33x
💻 Local Express 1.244s (~) 2.023s (~) 0.000s (-8.3% 🟢) 2.025s (~) 0.781s 30 1.37x
💻 Local Next.js (Turbopack) 1.260s 2.021s 0.000s 2.024s 0.764s 30 1.39x

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 2.653s (+3.5%) 3.856s (-2.2%) 0.000s (~) 4.362s (~) 1.710s 14 1.00x
▲ Vercel Next.js (Turbopack) 2.755s (-10.5% 🟢) 4.011s (-12.6% 🟢) 0.000s (+Infinity% 🔺) 4.378s (-12.5% 🟢) 1.623s 14 1.04x
▲ Vercel Express ⚠️ missing - - - - -

🔍 Observability: Nitro | Next.js (Turbopack)

fan-out fan-in 10 streams (1MB each)

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 1.781s 2.146s 0.000s 2.153s 0.372s 28 1.00x
🐘 Postgres Express 1.799s (+2.1%) 2.142s (~) 0.000s (NaN%) 2.152s (~) 0.353s 28 1.01x
🐘 Postgres Nitro 1.815s (+3.7%) 2.137s (+1.7%) 0.000s (+210.7% 🔺) 2.154s (+1.9%) 0.339s 28 1.02x
💻 Local Nitro 3.408s (-11.3% 🟢) 3.971s (-8.0% 🟢) 0.001s (+12.5% 🔺) 3.975s (-8.0% 🟢) 0.566s 16 1.91x
💻 Local Express 3.667s (+0.6%) 4.100s (-1.6%) 0.001s (+25.0% 🔺) 4.104s (-1.6%) 0.437s 15 2.06x
💻 Local Next.js (Turbopack) 3.683s 4.099s 0.001s 4.104s 0.421s 15 2.07x

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 3.595s (+1.8%) 4.872s (~) 0.000s (+100.0% 🔺) 5.337s (+1.7%) 1.742s 12 1.00x
▲ Vercel Next.js (Turbopack) 5.694s (+51.6% 🔺) 6.955s (+38.5% 🔺) 0.000s (NaN%) 7.410s (+35.5% 🔺) 1.716s 10 1.58x
▲ Vercel Express ⚠️ missing - - - - -

🔍 Observability: Nitro | Next.js (Turbopack)

Summary

Fastest Framework by World

Winner determined by most benchmark wins

World 🥇 Fastest Framework Wins
💻 Local Next.js (Turbopack) 10/21
🐘 Postgres Next.js (Turbopack) 18/21
▲ Vercel Nitro 12/21
Fastest World by Framework

Winner determined by most benchmark wins

Framework 🥇 Fastest World Wins
Express 🐘 Postgres 18/21
Next.js (Turbopack) 🐘 Postgres 16/21
Nitro 🐘 Postgres 18/21
Column Definitions
  • Workflow Time: Runtime reported by workflow (completedAt - createdAt) - primary metric
  • TTFB: Time to First Byte - time from workflow start until first stream byte received (stream benchmarks only)
  • Slurp: Time from first byte to complete stream consumption (stream benchmarks only)
  • Wall Time: Total testbench time (trigger workflow + poll for result)
  • Overhead: Testbench overhead (Wall Time - Workflow Time)
  • Samples: Number of benchmark iterations run
  • vs Fastest: How much slower compared to the fastest configuration for this benchmark

Worlds:

  • 💻 Local: In-memory filesystem world (local development)
  • 🐘 Postgres: PostgreSQL database world (local development)
  • ▲ Vercel: Vercel production/preview deployment
  • 🌐 Turso: Community world (local development)
  • 🌐 MongoDB: Community world (local development)
  • 🌐 Redis: Community world (local development)
  • 🌐 Jazz: Community world (local development)

📋 View full workflow run


Some benchmark jobs failed:

  • Local: success
  • Postgres: success
  • Vercel: failure

Check the workflow run for details.

Copy link
Copy Markdown
Contributor

@vercel vercel bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Additional Suggestion:

Resilient start path creates run and run_created event as two separate queries without a database transaction, risking orphaned runs if the event insert fails.

Fix on Vercel

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant